Electronic systems and circuits have made a significant contribution towards the advancement of modem society and are utilized in a number of applications to achieve advantageous results. Electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Frequently, the electronic systems designed to provide these results include memories (e.g., low power double data rate (LPDDR) memory, MemLink, synchronous dynamic random access memory, NOR flash memory, NAND Flash memory and the like). However, accessing memory resources in a fast and efficient manner can involve complicated protocols.
Numerous electronic devices include processors that operate by executing software comprising a series of instructions for manipulating data in the performance of useful tasks. The instructions and associated data are typically stored in a memory. Memories usually consist of a location for storing information and a unique indicator or address. The utility a device provides often depends upon the speed and efficiency at which instructions are executed. The ability to access a memory and transfer information quickly and conveniently usually has a significant impact on information processing latency. The configuration of a memory usually affects the speed at which memory locations are accessed.
Traditional attempts at memory control are often very convoluted and complex. Conventional systems that utilize tokens usually introduce a number of inefficiencies. For example, token approaches often create inefficiency and overhead with regards to the number of buffers in the system and often result in more buffers being made available than what is actually necessary for a link to function. Token approaches can also create inefficiencies with regards to latency and available bandwidth. The token approach can also lead to other scheduling issues. A controller may want to schedule a request but has no idea or way of knowing how long the request is going to take in the system because the controller doesn't know the traffic patterns going downstream. A storage node could have run out of buffers for a number of reasons, such as the node could be backed up, a request is stuck at the node, and the system can become non optimal and non deterministic.